/**
 * @file IPC 通信协议配置
 * @description 定义主进程与渲染进程间状态管理相关的 IPC 通信主题（topic）
 *
 * ## 通信协议分类
 * - **运行时状态**: 处理临时状态的同步和管理
 * - **持久性状态**: 处理需要持久化的状态操作
 *
 * @author 黄敏
 * @version 1.0.0
 * @since 2025-06-19
 */

/**
 * IPC 通信主题配置对象
 * @description 统一管理所有状态相关的 IPC 通信频道，确保主进程和渲染进程间的通信一致性
 */
export const topic = {
  // ==================== 运行时状态管理 ====================

  /** 设置运行时状态 - 从渲染进程向主进程发送状态更新 */
  setRuntime: 'runtime-state:setRuntime',

  /** 获取运行时状态 - 从渲染进程向主进程请求当前状态值 */
  getRuntime: 'runtime-state:getRuntime',

  /** 清除运行时状态 - 从渲染进程请求主进程删除特定状态 */
  clearRuntime: 'runtime-state:clearRuntime',

  /** 运行时状态更新通知 - 主进程向所有渲染进程广播状态变更 */
  updateRuntime: 'runtime-state:updateRuntime',

  // ==================== 持久性状态管理 ====================

  /**
   * 获取持久性状态
   * @description 用于从主进程获取指定状态的完整数据或特定键值
   */
  get: 'storage-state:get',

  /**
   * 设置持久性状态
   * @description 用于向主进程发送状态更新请求，支持单键更新和批量更新
   */
  set: 'storage-state:set',

  /**
   * 持久性状态更新通知
   * @description 用于主进程向渲染进程广播状态变更通知
   *
   * ## 使用格式
   * - 完整状态更新: `${topic.update}-{stateName}`
   * - 单键状态更新: `${topic.update}-{stateName}-{key}`
   *
   * @example
   * ```typescript
   * // 监听用户设置的完整状态更新
   * `${topic.update}-userSettings`
   *
   * // 监听用户设置中主题的特定更新
   * `${topic.update}-userSettings-theme`
   * ```
   */
  update: 'storage-state:update'
}
